using RadioTimer.Models;

namespace RadioTimer.Services
{
    /// <summary>
    /// 数据存储服务接口
    /// 提供应用程序设置和统计信息的持久化存储功能
    /// 使用Preferences API实现跨平台的数据存储
    /// </summary>
    public interface IDataStorageService
    {
        /// <summary>
        /// 异步加载应用程序设置
        /// </summary>
        /// <returns>返回应用程序设置对象，如果加载失败则返回默认设置</returns>
        Task<AppSettings> LoadAppSettingsAsync();
        
        /// <summary>
        /// 异步保存应用程序设置
        /// </summary>
        /// <param name="settings">要保存的应用程序设置对象</param>
        /// <returns>异步任务</returns>
        Task SaveAppSettingsAsync(AppSettings settings);

        /// <summary>
        /// 异步加载报时统计信息
        /// </summary>
        /// <returns>返回报时统计信息对象，如果加载失败则返回默认统计信息</returns>
        Task<ChimeStatistics> LoadStatisticsAsync();
        
        /// <summary>
        /// 异步保存报时统计信息
        /// </summary>
        /// <param name="statistics">要保存的报时统计信息对象</param>
        /// <returns>异步任务</returns>
        Task SaveStatisticsAsync(ChimeStatistics statistics);

        /// <summary>
        /// 异步清除所有存储的数据
        /// </summary>
        /// <returns>异步任务</returns>
        Task ClearAllDataAsync();
    }
}